import java.util.InputMismatchException;
import java.util.Scanner;

public class Practice {
    public static void main1(String[] args) {
        //根据年龄，来打印出当前年龄的人是少年（低于18），青年（19-28），中年（29-55），老年（56以上）
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年龄：");
        int age = sc.nextInt();
        if (age < 18) {
            System.out.println("少年");
        } else if (age >= 18 && age <= 28) {
            System.out.println("青年");
        } else if (age > 28 && age <= 55) {
            System.out.println("中年");
        } else {
            System.out.println("老年");
        }
    }

    //判断一个数是否是素数
    public static void main2(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数：");
        int num = sc.nextInt();
        boolean flag = true;
        for (int i = 2; i < num; i++) {
            if (num % i == 0) {
                flag = false;
                break;
            }
        }
        if (flag) {
            System.out.println(num + "是素数");
        }
    }

    //打印1-100之间所有的素数
    public static void main3(String[] args) {
        for (int i = 2; i <= 100; i++) {
            boolean flag = true;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                System.out.print(i + " ");
            }
        }
    }

    //输出1000-2000之间所有的闰年
    public static void main4(String[] args) {
        for (int i = 1000; i <= 2000; i++) {
            if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
                System.out.println(i);
            }
        }
    }

    //输出乘法口诀
    public static void main9(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + i * j + "\t");
            }
            System.out.println();
        }
    }

    //求两个正整数的最大公约数
    public static void main5(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入两个正整数：");
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        int min = num1 < num2 ? num1 : num2;
        for (int i = min; i >= 1; i--) {
            if (num1 % i == 0 && num2 % i == 0) {
                System.out.println("最大公约数是：" + i);
            }
        }
    }

    //求0-999的水仙花数并输出
    public static void main6(String[] args) {
        for (int i = 100; i <= 999; i++) {
            int a = i % 10;
            int b = i / 10 % 10;
            int c = i / 100;
            if (a * a * a + b * b * b + c * c * c == i) {
                System.out.println(i);
            }
        }
    }

    //写一个函数返回参数二进制中1的个数
    public static void main7(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数：");
        int num = sc.nextInt();
        int count = 0;
        while (num != 0) {
            count++;
            num = num & (num - 1);
        }
        System.out.println("二进制中1的个数是：" + count);
    }

    //获取一个数的二进制序列中所有的偶数位和奇数位，分别输出二进制序列


    public static void main8(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入一个整数: ");
        int number = scanner.nextInt(); // 使用Scanner读取用户输入的整数

        String binaryString = Integer.toBinaryString(number);
        System.out.println("原始二进制: " + binaryString);

        StringBuilder evenBits = new StringBuilder();
        StringBuilder oddBits = new StringBuilder();

        for (int i = 0; i < binaryString.length(); i++) {
            if ((binaryString.length() - i) % 2 == 0) { // 判断是否为偶数位（从右向左计数）
                evenBits.append(binaryString.charAt(i));
            } else {
                oddBits.append(binaryString.charAt(i));
            }
        }

        System.out.println("偶数位组成的二进制序列: " + evenBits.toString());
        System.out.println("奇数位组成的二进制序列: " + oddBits.toString());

        scanner.close(); // 关闭scanner对象，防止资源泄露
    }

    //猜数字游戏
    public static void main(String[] args) {
        // 使用 try-with-resources 确保 Scanner 资源自动关闭
        try (Scanner sc = new Scanner(System.in)) {
            int num = (int) (Math.random() * 100 + 1); // 生成1到100之间的随机数
            boolean hasGuessedCorrectly = false; // 标记是否已猜对

            while (!hasGuessedCorrectly) { // 只要没有猜对就继续循环
                System.out.println("请输入一个1-100的数字：");
                try {
                    int guess = sc.nextInt();
                    if (guess > num) {
                        System.out.println("猜大了");
                    } else if (guess < num) {
                        System.out.println("猜小了");
                    } else {
                        System.out.println("恭喜你猜对了");
                        hasGuessedCorrectly = true; // 猜对了，标记为true
                    }
                } catch (InputMismatchException e) {
                    System.out.println("输入无效，请输入一个整数！");
                    sc.next(); // 清除缓冲区中的无效输入
                }
            }
        }
        // 在此不需要手动关闭 Scanner，因为它是在 try-with-resources 块中创建的
    }

}
